1. Field of the Invention
The present invention relates to computer database structures. More specifically, the present invention relates to a scalable and multi-threaded database architecture that is particularly fault-tolerant and advantageous for use in group communication control among a communicating group of wireless communication devices.
2. Description of the Related Art
There exists a wireless telecommunication service that provides a quick one-to-one or one-to-many communication that is generically referred to as “Push-To-Talk” (PTT) capability. The specific PTT group of recipient devices for the communicating wireless device is commonly set up by the carrier and held on a database accessible to a server that sets up and controls the group communications. A PTT communication connection is typically initiated by a single button-push on the wireless device that activates a half-duplex link between the speaker and each member device of the group and once the button is released, the device can receive incoming PTT transmissions once the button is released. In some arrangements, the PTT speaker will have the “floor” where no other group member can speak while the speaker is speaking, and it is up to the communication server to determine which device has the floor. Once the speaker releases the PTT button, any other individual member of the group can engage their PTT button and they will have the floor.
A problem occurs when a database, such as the database that holds the group information of PTT groups, needs to be constantly updated with new information, e.g. new PTT groups are being added at the carrier, yet also be accessed as new group communications occur. Thus, the carrier (or other server) needs to transmit the new group data to the database that is typically accessible by the group communication server, so that the group communication server can update its records in memory in order and also can checkpoint the data in its database in order, i.e. match the correct group information that is provided by the carrier or other entity.
This updating typically occurs with the carrier server sending new data in multiple packets, with each packet having multiple records that are stored in order. The group communication server (or other receiving server) spawns a new thread for each incoming packet and then updates the server's memory and checkpoints it into a database. With a very large number of records and virtually constant access of the database as it is being updated, the likelihood of a failed update increases. Moreover, if a crash or failed transmission occurs in sending the new data such that the receiving server needs to restart, the receiving server can only read those records from the checkpoint that are stored in order and will otherwise need to request that the carrier server again update the receiving server with data from the last record it read from the checkpoint in order, which in the worst case requires restarting the data transmission from the beginning.
A common solution to this problem with a database that needs to be constantly updated and accessed is to use a queue for incoming packets and then choose a specific packet for updating in order. Once an application thread controls the packet, in order, the packet order will be updated in the cache and will also form a checkpoint for determining how far the update has progressed. However, an error in the order receipt of packets, which is common in a packet network such as the Internet or other TCP/IP switched network, will cause the storage to fail if the queue is filled before the correctly ordered packet is located for the updating process.
Accordingly, it would be advantageous to provide an improved database architecture that would reliably allow the receipt of new ordered data and updating of the database with the correct order of new data without a significant risk of failure and the need to resend the entire new data transmission. The updating of the data within the database should not interfere with the accessing of the updating database by other applications. It is thus to the provision of such an improved database architecture that the present invention is primarily directed.